<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
<!-- 
    数组：一组数据，有序的数据集合
    作用：用于在一个变量中保存多个数据
    数组中的元素可以是任意数据类型
    数组中每一个元素都对应一个索引（下标），索引始终从0开始

    创建数组：
    var arr1 = [];
    var arr2 = new Array();

    访问数组元素：通过索引访问数组中的元素 数组[索引];
    修改数组元素：给指定索引位置的元素重新赋值 数组[索引] = value;
    数组的length属性：返回数组的长度（元素的个数）
    数组的length属性可以修改（可读写），可以控制数组的元素个数
    访问数组长度之外的元素，不会报错，返回undefined
    清空数组：arr = [];  arr.length = 0;

    遍历数组：
        1.使用for循环遍历
        2.使用for/in遍历（元素值为undefined时不会被遍历出来）

    注意点：
        1.数组最后一个元素后面可以写逗号，但是不会影响数组长度
        2.数组元素之间有多余的逗号，会影响数组的长度
        3.数组的索引可以为负数，但是长度不变

    数组复杂的数据：
        1.数组中的元素可以是任意数据类型
        2.多维数组（数组嵌套数组）
        3.对象数组（数组嵌套对象）

    改变原数组的方法：
        arr.push()向数组末尾添加一个元素，返回数组新的长度
        arr.pop()删除数组最后一个元素，返回被删除的元素
        arr.unshift()向数组最前面添加一个元素，返回数组新的长度
        arr.shift()删除数组最前面的一个元素，返回被删除的元素
        arr.splice()可以对数组进行添加、删除、修改元素，返回一个新的数组（被删除的元素）
        arr.reverse()反转数组，返回原数组
        arr.sort()对数组进行排序，返回原数组
        默认排序规则：先比较第一个字符的ASCII码值，如果第一个相同则比较下一个字符
        arr.sort(function (a,b){//默认a<b
            return a-b;// 升序  也可以返回一个负数
        });
        arr.sort(function (a,b){
            return b-a;// 降序
        });

    不改变原数组的方法：
        arr.slice()从原数组拷贝一部分，返回一个新的数组   
        arr.concat(arr2)合并数组，返回一个新的数组
        arr.toString()将数组转成字符串，返回字符串值
        arr.join()将数组转成字符串，可以自定义元素之间的拼接符号，返回字符串值

    ES5新增的数组方法：
        arr.indexOf()返回某个值在数组中第一次出现的索引，没有返回-1
        arr.lastIndexOf()返回某个值在数组中最后出现的索引，没有返回-1
        Array.isArray(val)判断val是否为数组，返回布尔值

        arr.forEach(function (item,index,arr){
            item 当前遍历的元素
            index 当前元素的索引
            arr 遍历的数据
        }); 遍历数组，没有返回值
        arr.map(function (item){
            return item * 2;
        }); 遍历数组，返回一个新的数组
        arr.filter()用于过滤数组，符合条件的元素被返回到一个新数组中，返回一个新的数组
        arr.some()用于检测数组中是否有元素符合条件，有则返回true，无则返回false
        arr.every()用于检测数组中是否所有元素符合条件，都符合则返回true，否则返回false

        arr.reduce()遍历数组，构建一个最终的值（归并）
 -->

</body>
</html>